package com.appistry.storage;

import java.util.Date;

public interface FileMetaData {
	/**
	 * The version of this file.
	 * @return
	 */
	public String getVersion();
	
	/**
	 * The minimum copies of the file required to be written in a successful write operation.
	 * 
	 * @return
	 */
	public int getMinWriteCopies();

	/**
	 * The minimum copies of the file compared in a successful read operation.
	 * 
	 * @return
	 */
	public int getMinReadCopies();

	/**
	 * The desired numbered of copies to be maintained in system.
	 * 
	 * @return
	 */
	public int getNumCopies();

	/**
	 * Whether the file has been deleted.
	 * 
	 * @return
	 */
	public boolean isDeleted();

	/**
	 * Time of creation.
	 * 
	 * @return
	 */
	public Date getCreateTime();

	/**
	 * Time of modification.
	 * 
	 * @return
	 */
	public Date getModifiedTime();

	/**
	 * The size of the file in bytes.
	 * 
	 * @return
	 */
	public long getSize();
	
	/**
	 * FileMetaData entry from each worker within storage that has this file.
	 * @return
	 */
}
